草庐IT

c++ - 在 C++11 中实现 boost::optional

全部标签

c++ - 在 boost::ptr_unordered_map 中存储指向 const 对象的指针

我似乎做不到boost::ptr_unordered_map工作-底层实现看起来像是将东西转换为void*.我是否只需要硬着头皮让我的方法包装对此的访问做一个const_cast插入项目时,或者我在这里遗漏了什么?有什么方法可以存储指向const对象的指针(constFoo*)? 最佳答案 看起来这是不可能的。解决方法是包装对ptr_unordered_map的访问.插入方法应该采用constauto_ptr然后执行const_cast插入它。如果您在删除元素时将auto_type交还给客户端代码,则需要从中解压指针并将其传输到co

C++ DX11 应用程序仅在 Visual Studio IDE 中运行

好吧,我在MSDN论坛上提出了这个问题,但尚未收到任何类型的回复,所以我想我应该试试StackOverflow。我目前正在Win7上使用VS2008开发DirectX应用程序。我最近遇到了一个内存分配类的严重内存损坏错误,该错误会占用字节对齐的内存。在此错误期间,我仍然可以运行调试并发布可执行文件,但是它会由于指令损坏或其他原因而崩溃,但它仍会执行一段时间直到崩溃。然后我剥离了整个内存分配类。该应用程序在IDE(发布和调试版本)中运行完美,但我根本无法运行任何可执行文件。他们立即因无响应/停止工作错误而崩溃。而且我不认为这是我的环境,因为我在另一台之前没有问题的计算机上遇到了同样的问题

c++ - 尝试在 OpenGL/SFML 中实现鼠标外观 "camera"

我将OpenGL与SFML1.6结合使用已有一段时间了,效果非常好!除了一个异常(exception):我似乎无法正确实现相机类。你看,我正在尝试创建一个名为“Camera”的C++类。这是我的功能:Camera::Strafe(floatfSpeed)检查是否按下了WASD键,如果是,则以“fSpeed”向各自的方向移动相机。Camera::MouseMove(intcurrentX,intcurrentY)应提供第一人称鼠标外观,采用当前鼠标坐标并相应地旋转相机。我的Strafe()实现工作正常,但我似乎无法正确使用MouseMove()。通过阅读有关OpenGL鼠标外观实现的其他

c++ - 将 boost::log 用于具有额外 'channel' 和 'id' 属性的多线程应用程序的最佳方法是什么

我想将一个多线程应用程序同时登录到控制台和文件,日志行应该是这样的:2011-07-1814:48:51.849100COREW:message100是唯一的id'CORE'是一个channel,我可以有更多的channel,例如数据、网络。'W'表示警告目前我尝试过,大致是:boost::log::sources::severity_loggersevlogger;enumChannel{Core,...};attrChannel.reset(newboost::log::attributes::mutable_constant(Core));boost::log::core::ge

c++ - boost 无锁使用用户定义类型

我尝试使用boost无锁库。但是,出现错误invalidapplicationof‘sizeof’toincompletetype‘boost::STATIC_ASSERTION_FAILURE’当我将模板参数设置为用户定义类型时。有办法解决吗?typedefstructTMsgBuffer{charm_puBuffer[512];size_tm_iBufferLen;}tMsgBuffer;boost::lockfree::fifofifo; 最佳答案 STATIC_ASSERTION_FAILURE源自BOOST_STATIC_

c++ - boost Asio : waiting until thread_group has processed all posted tasks?

我有一个对象,一旦创建就会在后台执行许多任务,但应该阻塞直到/所有/发布的任务完成。即:structrun_many{boost::asio::io_servicem_io_service;boost::thread_groupm_threads;boost::asio::signal_setm_signals;voidevaluate(std::stringwork,inti){/*...*/}voidrun_tasks(inttasks,std::stringwork){{boost::asio::io_service::workw(m_io_service);//for(inti

c++ - 如何使用 boost::asio 在 http 上进行 POST?

你好,我正在尝试使用boost::asio进行POST,但我无法这样做。我正在看这个示例代码:http://www.boost.org/doc/libs/1_49_0/doc/html/boost_asio/example/http/client/sync_client.cpp如何使用POST而不是GET来编写此代码? 最佳答案 asio在传输层(例如tcp套接字)上工作,而不是在应用程序层上工作。如果您选择广泛使用的http客户端库而不是自己实现http协议(protocol),您的解决方案将更易于维护。SO上经常提到curl、p

c++ - 如何使用 VS2003 工具集从 VS11 中构建 C++ 项目?

我尝试将适用于VisualC++2005的(工作)平台工具集的拷贝添加到C:\ProgramFiles(x86)\MSBuild\Microsoft.Cpp\v4.0\Platforms\Win32\PlatformToolsets\v71,替换所有有道理。但是当我尝试编译我的项目时,输出结果令人失望:1>Microsoft(R)32-bitC/C++OptimizingCompilerVersion13.10.6030for80x861>Copyright(C)MicrosoftCorporation1984-2002.Allrightsreserved.1>1>clÿþ/1>1>c

c++ - 对于派生类对象的基类部分,如何在基类中实现运算符重载?

对于派生类对象的基类部分,如何在基类中实现运算符重载?请查看此示例代码并实现基类部分以在派生类对象上实现*运算符classbase{intx;public:};classder:publicbase{inty;public:constderoperator*(constder&rh){derd;d.y=y*rh.y;returnd;}}; 最佳答案 classbase{intx;public:base&operator*=(constbase&rh){x*=rh.x;return*this;}baseoperator*(constb

c++ - 跨线程复制 boost::exception 崩溃

下面的示例代码将boost::exception对象从1个线程复制/传输到另一个线程,由于异常/exception_ptr内部状态销毁期间的竞争条件而崩溃。我不确定解决它的最佳方法是什么。使用的boost版本是1.42,平台是在双核Intelm/c上运行的Ubuntulucid。编译器是gcc4.4.3。#include#include#includestructException:publicvirtualstd::exception,publicvirtualboost::exception{};structMyException:publicvirtualException{};